var express = require('express');
var router = express.Router();


router
    // 数据库查询操作
    .get('/find', async function (req, res, next) {
        // res.end('hello find');

        // 先获取 model
        var UserModel = require('./userModel').UserModel;

        // 数据库查询操作
        // 查询操作是异步的
        // 因为使用了 await 所以我们需要在 function 前面加上 async 
        var data = await UserModel.find();
        // find 还可以根据我们的需求进行过滤
        var data = await UserModel.find({ username: 'liudehua' });
        console.log(data);
        res.json(data);
        res.end();
    })
    // 删除操作
    .delete('/delete', async function (req, res, next) {
        // 获取 model
        var UserModel = require('./userModel').UserModel;

        // 数据库删除操作
        // 删除数据的原则： 我们删除数据时，是一定有这条数据的，删除数据判定成功原则是数据库里不再有这条数据，这个时候就判定为删除成功
        // 删除操作是异步的
        await UserModel.remove({ username: 'liudehua' }, function (err) {
            if (err) return res.json({ "type": "error", "msg": err });
            res.json({ "type": "success", "msg": "删除成功" });
        });
        res.end();
    })
    // 更新操作
    .put('/update', async function (req, res, next) {

        // 获取 model 
        var UserModel = require('./userModel').UserModel;

        // 数据库更新操作
        // 更新原则和删除一样，更新之前是一定有这条数据的，数据库中不再有原来那条数据，就会被判定为更新成功
        // 接收三个参数：查询条件、更新的内容、回调函数
        await UserModel.findOneAndUpdate({ username: 'guofucheng', password: '12345678' },
            { $set: { password: '123456' } }, function (err) {
                if (err) return res.json({ "type": "error", "msg": err });
                res.json({ "type": "success", "msg": "更新成功" });
            });
        res.end();
    })




module.exports = router;